﻿//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;
//	int i = 0;
//	for (int i = 0; i <= 11; i++)
//	{
//		//当指针超出arr的范围的时候，p就是野指针
//		*(p++) = i;
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	//不使用下标访问数组
//	int* p = &arr[0];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);//求个数
//	for (i = 0; i < sz; i++)
//	{
//		*p = i;
//		p++;//p = p+1
//	}
//	p = arr;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));//p+i是为了访问下一个元素，因为每次都是变化的
//	}
//	printf("\n");
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	printf("%d\n", &arr[9] - &arr[0]);//
//	printf("%d\n", &arr[0] - &arr[9]);//
//
//	return 0;
//}


//#include<stdio.h>
//size_t str(char* str)
//{
//	char* p = str;//存初始地址
//	while (*str)//当读取到\0的时候，跳出，因为\0的值为0；
//	{
//		str++;
//	}
//	return str - p;//地址
//}
//int main()
//{
//	char arr[] = "abcdef";
//	size_t ret = str(arr);
//	printf("%zd\n", ret);
//
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int* p = &a;//p是指针变量，一级指针变量
//	int** pp = &p;//pp是指针，二级指针变量
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 110;
//	int* p = &a;
//	int** pp = &p;
//	**pp = 111;
//	printf("%d", a);
//	return 0;
//}


//使用指针数组，模拟一个二维数组
//#include<stdio.h>
//int main()
//{
//	int arr1[] = { 1,2,3,4,5 };
//	int arr2[] = { 2,3,4,5,6 };
//	int arr3[] = { 3,4,5,6,7 };
//	//指针数组
//	int* arr[] = { arr1,arr2,arr3 };
//	//0   1     2
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < 3; i++)//找到首元素
//	{
//		for (j = 0; j < 5; j++)//遍历每一个数组的元素
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%d\n", &arr);
//	printf("%d\n", &arr + 1);
//	//int* 跳过4个字节
//	printf("%d\n", arr);
//	printf("%d\n", arr + 1);
//	printf("%d\n", &arr[0]);
//	printf("%d\n", &arr[0] + 1);
//
//	printf("%d\n", sizeof(arr));
//	return 0;
//}


//#include<stdio.h>
//struct Stu
//{
//	char name[10];
//	char sex[5];
//	int age;
//};
//int main()
//{
//	return 0;
//}

#include<stdio.h>
#pragma warning(disable:4996)
#include<string.h>
struct S
{
	char name[20];
	int age;
};
void set_s(struct S* t)//传地址，形参
{
	//(*t).age = 18;
	t->age = 19;
	//strcpy((*t).name, "zhangsan");//字符串拷贝
	strcpy(t->name, "zhangsan");
}
int main()
{
	struct S s = { "mingzi",0 };
	//写一个函数给s中存放数据
	set_s(&s);//实参
	printf("%s %d\n", s.name, s.age);
	return 0;
}